package Day011_多线程1.demo02_Thread线程类;

/**
 * @author zhangyan
 * @date 2020/4/28 10:35
 */

/*
    Thread线程常用方法：
        public void start() :导致此线程开始执行; Java虚拟机调用此线程的run方法。
        public void run() :此线程要执行的任务在此处定义代码。

        public String getName() :获取当前线程名称
        public static void sleep(long millis) :使当前正在执行的线程以指定的毫秒数暂停（暂时停止执行）。
        public static Thread currentThread() :返回对当前正在执行的线程对象的引用。
 */

public class demo05_线程方法 {
    public static void main(String[] args) {

        //创建对象
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i <= 100; i++) {
                    //           Thread.currentThread():返回对当前正在执行的线程对象的引用
                    System.out.println(Thread.currentThread().getName() + ": i循环的第" + i + "次循环");
                }
            }
        }, "线程B");

        t1.start();
        System.out.println(Thread.currentThread());
        //主线程j循环
        for (int j = 0; j <= 100; j++) {
            System.out.println("j循环的第" + j + "次循环");

            //每执行一次j,暂停1s
            try {
                //t1.sleep();//静态方法,类名/对象调用  //sleep会有编译错误,需要捕获处理
                Thread.sleep(1000);// 暂停就不会抢占cpu
            }catch (InterruptedException e){
                e.printStackTrace();
            }
        }
        //先抢占,j循环抢到后执行一次,会暂停1秒,这时候子线程执行,j(睡着了)不会抢占
    }
}
